package com.zhihuishu.micro.course.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.github.abel533.mapper.Mapper;
import com.zhihuishu.micro.course.model.Chapter;

/**
 * 
 * @author zhanglikun
 * @date 2015年10月28日 下午2:09:09
 */
public interface ChapterMapper extends Mapper<Chapter> {

    Chapter get(int chapterId);
    
    List<Chapter> getByIds(@Param("chapterIds")List<Integer> chapterIds);

    /**
     * 根据课程ID查询章ID列表(未删除、已发布)
     * 
     * @param courseId
     * @return
     */
    List<Integer> list(long courseId);

    void update(Chapter chapter);

    void remove(int chapterId);

    /**
     * 根据课程id（cc_course表ID）获取章信息
     * 
     * @param courseId
     * @return
     */
    List<Chapter> findChaptersByCourseId(Long courseId);

    /**
     * 根据课程ID查询章节
     * 
     * @author ztl
     * @param courseId
     * @return
     */
    List<Chapter> getChapterListFromDb(Long courseId);

    /**
     * @Description:删除章后 需要更新章后面章的顺序 要查出来用于更新缓存
     * @date:@2016年12月8日下午2:00:42
     * @author:嵇鹏
     * @Param:
     * @retuen:List<Integer>
     */
    List<Integer> queryIdsByCourseIdAndOredrNunber(@Param("courseId")
    Long courseId, @Param("orderNumber")
    Integer orderNumber);

    /**
     * @Description:删除章后 要更新该章后面的顺序-1
     * @date:@2016年12月8日下午2:21:35
     * @author:嵇鹏
     * @Param:
     * @retuen:void
     */
    void updateMinusOrderNumByCourseIdAndOrderNumber(@Param("courseId")
    Long courseId, @Param("orderNumber")
    Integer orderNumber);

    List<Integer> queryChapterIdsContainSmallOrder(@Param("courseId")
    Long courseId, @Param("orginRankBig")
    Integer orginRankBig, @Param("targerRankSmall")
    Integer targerRankSmall);

    void updateChapterIdsContainSmallOrder(@Param("courseId")
    Long courseId, @Param("orginRankBig")
    Integer orginRankBig, @Param("targerRankSmall")
    Integer targerRankSmall);

    List<Integer> queryChapterIdsContainBigOrder(@Param("courseId")
    Long courseId, @Param("orginRankSmall")
    Integer orginRankSmall, @Param("targerRankBig")
    Integer targerRankBig);

    void updateChapterIdsContainBigOrder(@Param("courseId")
    Long courseId, @Param("orginRankSmall")
    Integer orginRankSmall, @Param("targerRankBig")
    Integer targerRankBig);
    /**
     * @Description:查询课程下章最大的序号
     *  @date:@2016年12月16日上午10:16:20
     *  @author:嵇鹏
     *  @Param:
     *  @retuen:int
     */
    int queryMaxChapterSortByCourseId(Long courseId);
    /**
     * @Description:查询章的完整度选项信息
     *  @date:@2016年12月19日上午9:29:27
     *  @author:嵇鹏
     *  @Param:
     *  @retuen:Chapter
     */
    //Chapter selectInfoForCompCheck(Integer chapterId);
    /**
     * @Description:查询课程下通过/所有的章ids
     *  @date:@2017年1月11日下午7:05:45
     *  @author:嵇鹏
     *  @Param:
     *  @retuen:List<Integer>
     */
    List<Integer> queryChapterIdsByCourseId(@Param("courseId")long courseId,@Param("passFlag")Integer passFlag);

    
    
  

}
